home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / RTLWIN16.PAK / OLE2.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  45KB  |  1,338 lines

  1. /* $Copyright: 1994$ */
  2.  
  3. /*****************************************************************************\
  4. *                                                                             *
  5. * ole2.h -              Main OLE2 header; includes all subcomponents                              *
  6. *                                                                             *
  7. *               OLE Version 2.0                                               *
  8. *                                                                             *
  9. \*****************************************************************************/
  10.  
  11.  
  12. #if !defined( _OLE2_H_ )
  13. #define _OLE2_H_
  14. #define __OLE2_H
  15.  
  16. #ifndef RC_INVOKED
  17. #pragma warning(disable:4001)
  18. #endif  /* RC_INVOKED */
  19.  
  20. #include <string.h>
  21.  
  22. /****** Standard Object Definitions *****************************************/
  23.  
  24. #include <compobj.h>
  25.  
  26.  
  27. // *************** FACILITY_ITF scodes common to all interfaces ************
  28. //
  29. // By convention, OLE interfaces divide the FACILITY_ITF range of errors
  30. // into nonoverlapping subranges.  If an interface returns a FACILITY_ITF
  31. // scode, it must be from the range associated with that interface or from
  32. // the shared range: OLE_E_FIRST...OLE_E_LAST.
  33. //
  34.  
  35. // error codes
  36.  
  37. #define OLE_E_OLEVERB               (OLE_E_FIRST)
  38. // invalid OLEVERB structure
  39.  
  40. #define OLE_E_ADVF                  (OLE_E_FIRST+1)
  41. // invalid advise flags
  42.  
  43. #define OLE_E_ENUM_NOMORE           (OLE_E_FIRST+2)
  44. // you can't enuemrate any more, because the associated data is missing
  45.  
  46. #define OLE_E_ADVISENOTSUPPORTED    (OLE_E_FIRST+3)
  47. // this implementation doesn't take advises
  48.  
  49. #define OLE_E_NOCONNECTION          (OLE_E_FIRST+4)
  50. // there is no connection for this connection id
  51.  
  52. #define OLE_E_NOTRUNNING            (OLE_E_FIRST+5)
  53. // need run the object to perform this operation
  54.  
  55. #define OLE_E_NOCACHE               (OLE_E_FIRST+6)
  56. // there is no cache to operate on
  57.  
  58. #define OLE_E_BLANK                 (OLE_E_FIRST+7)
  59. // Uninitialized object
  60.  
  61. #define OLE_E_CLASSDIFF             (OLE_E_FIRST+8)
  62. // linked object's source class has changed
  63.  
  64. #define OLE_E_CANT_GETMONIKER       (OLE_E_FIRST+9)
  65. // not able to get the moniker of the object
  66.  
  67. #define OLE_E_CANT_BINDTOSOURCE     (OLE_E_FIRST+10)
  68. // not able to bind to the source
  69.  
  70. #define OLE_E_STATIC                (OLE_E_FIRST+11)
  71. // object is static, operation not allowed
  72.  
  73. #define OLE_E_PROMPTSAVECANCELLED   (OLE_E_FIRST+12)
  74. // user cancelled out of save dialog
  75.  
  76. #define OLE_E_INVALIDRECT           (OLE_E_FIRST+13)
  77. // invalid rectangle
  78.  
  79. #define OLE_E_WRONGCOMPOBJ          (OLE_E_FIRST+14)
  80. // compobj.dll is too old for the ole2.dll initialized
  81.  
  82. #define OLE_E_INVALIDHWND           (OLE_E_FIRST+15)
  83. // invalid window handle
  84.  
  85. #define OLE_E_NOT_INPLACEACTIVE     (OLE_E_FIRST+16)
  86. // object is not in any of the inplace active states
  87.  
  88. #define OLE_E_CANTCONVERT                       (OLE_E_FIRST+17)
  89. // not able to convert the object
  90.  
  91. #define OLE_E_NOSTORAGE                         (OLE_E_FIRST+18)
  92. // not able to perform the operation because object is not given storage yet.
  93.  
  94.  
  95. #define DVGEN_E_FIRST               (OLE_E_FIRST+100)
  96.  
  97. #define DV_E_FORMATETC              (DVGEN_E_FIRST)
  98. // invalid FORMATETC structure
  99.  
  100. #define DV_E_DVTARGETDEVICE         (DVGEN_E_FIRST+1)
  101. // invalid DVTARGETDEVICE structure
  102.  
  103. #define DV_E_STGMEDIUM              (DVGEN_E_FIRST+2)
  104. // invalid STDGMEDIUM structure
  105.  
  106. #define DV_E_STATDATA               (DVGEN_E_FIRST+3)
  107. // invalid STATDATA structure
  108.  
  109. #define DV_E_LINDEX                 (DVGEN_E_FIRST+4)
  110. // invalid lindex
  111.  
  112. #define DV_E_TYMED                  (DVGEN_E_FIRST+5)
  113. // invalid tymed
  114.  
  115. #define DV_E_CLIPFORMAT             (DVGEN_E_FIRST+6)
  116. // invalid clipboard format
  117.  
  118. #define DV_E_DVASPECT               (DVGEN_E_FIRST+7)
  119. // invalid aspect(s)
  120.  
  121. #define DV_E_DVTARGETDEVICE_SIZE    (DVGEN_E_FIRST+8)
  122. // tdSize paramter of the DVTARGETDEVICE structure is invalid
  123.  
  124. #define DV_E_NOIVIEWOBJECT          (DVGEN_E_FIRST+9)
  125. // object doesn't support IViewObject interface
  126.  
  127.  
  128. // Success codes
  129.  
  130. #define OLE_S_USEREG                (OLE_S_FIRST)
  131. // use the reg database to provide the requested info
  132.  
  133. #define OLE_S_STATIC                (OLE_S_FIRST+1)
  134. // success, but static
  135.  
  136. #define OLE_S_MAC_CLIPFORMAT        (OLE_S_FIRST+2)
  137. // macintosh clipboard format
  138.  
  139. //*************************** Interface or API specific scodes *************
  140.  
  141. // Errors for OleConvertOLESTREAMToIStorage and OleConvertIStorageToOLESTREAM
  142.  
  143. // OLESTREAM Get method failed
  144. #define CONVERT10_E_OLESTREAM_GET       (CONVERT10_E_FIRST + 0)
  145.  
  146. // OLESTREAM Put method failed
  147. #define CONVERT10_E_OLESTREAM_PUT       (CONVERT10_E_FIRST + 1)
  148.  
  149. // Contents of the OLESTREAM not in correct format
  150. #define CONVERT10_E_OLESTREAM_FMT       (CONVERT10_E_FIRST + 2)
  151.  
  152. // There was in an error in a Windows GDI call while converting the bitmap
  153. // to a DIB.
  154. #define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB (CONVERT10_E_FIRST + 3)
  155.  
  156. // Contents of the IStorage not in correct format
  157. #define CONVERT10_E_STG_FMT             (CONVERT10_E_FIRST + 4)
  158.  
  159. // Contents of IStorage is missing one of the standard streams ("\1CompObj",
  160. // "\1Ole", "\2OlePres000").  This may be the storage for a DLL object, or a
  161. // class that does not use the def handler.
  162. #define CONVERT10_E_STG_NO_STD_STREAM   (CONVERT10_E_FIRST + 5)
  163.  
  164. // There was in an error in a Windows GDI call while converting the DIB
  165. // to a bitmap.
  166. #define CONVERT10_E_STG_DIB_TO_BITMAP   (CONVERT10_E_FIRST + 6)
  167.  
  168.  
  169. // Returned by either API, this scode indicates that the original object
  170. //  had no presentation, therefore the converted object does not either.
  171. #define CONVERT10_S_NO_PRESENTATION     (CONVERT10_S_FIRST + 0)
  172.  
  173.  
  174. // Errors for Clipboard functions
  175.  
  176. // OpenClipboard Failed
  177. #define CLIPBRD_E_CANT_OPEN     (CLIPBRD_E_FIRST + 0)
  178.  
  179. // EmptyClipboard Failed
  180. #define CLIPBRD_E_CANT_EMPTY        (CLIPBRD_E_FIRST + 1)
  181.  
  182. // SetClipboard Failed
  183. #define CLIPBRD_E_CANT_SET          (CLIPBRD_E_FIRST + 2)
  184.  
  185. // Data on clipboard is invalid
  186. #define CLIPBRD_E_BAD_DATA          (CLIPBRD_E_FIRST + 3)
  187.  
  188. // CloseClipboard Failed
  189. #define CLIPBRD_E_CANT_CLOSE        (CLIPBRD_E_FIRST + 4)
  190.  
  191.  
  192. /****** OLE value types *****************************************************/
  193.  
  194. /* rendering options */
  195. typedef enum tagOLERENDER
  196. {
  197.     OLERENDER_NONE   = 0,
  198.     OLERENDER_DRAW   = 1,
  199.     OLERENDER_FORMAT = 2,
  200.     OLERENDER_ASIS   = 3
  201. } OLERENDER;
  202. typedef  OLERENDER FAR* LPOLERENDER;
  203.  
  204. // OLE verb; returned by IEnumOLEVERB
  205. typedef struct FARSTRUCT tagOLEVERB
  206. {
  207.     LONG    lVerb;
  208.     LPSTR   lpszVerbName;
  209.     DWORD   fuFlags;
  210.     DWORD       grfAttribs;
  211. } OLEVERB, FAR* LPOLEVERB;
  212.  
  213.  
  214. // Bitwise verb attributes used in OLEVERB.grfAttribs
  215. typedef enum tagOLEVERBATTRIB // bitwise
  216. {
  217.     OLEVERBATTRIB_NEVERDIRTIES = 1,
  218.     OLEVERBATTRIB_ONCONTAINERMENU = 2
  219. } OLEVERBATTRIB;
  220.  
  221.  
  222. // IOleObject::GetUserType optons; determines which form of the string to use
  223. typedef enum tagUSERCLASSTYPE
  224. {
  225.     USERCLASSTYPE_FULL = 1,
  226.     USERCLASSTYPE_SHORT= 2,
  227.     USERCLASSTYPE_APPNAME= 3,
  228. } USERCLASSTYPE;
  229.  
  230.  
  231. // bits returned from IOleObject::GetMistStatus
  232. typedef enum tagOLEMISC // bitwise
  233. {
  234.     OLEMISC_RECOMPOSEONRESIZE                           = 1,
  235.     OLEMISC_ONLYICONIC                                          = 2,
  236.     OLEMISC_INSERTNOTREPLACE                            = 4,
  237.     OLEMISC_STATIC                                                      = 8,
  238.     OLEMISC_CANTLINKINSIDE                                      = 16,
  239.     OLEMISC_CANLINKBYOLE1                                       = 32,
  240.     OLEMISC_ISLINKOBJECT                                        = 64,
  241.     OLEMISC_INSIDEOUT                                           = 128,
  242.     OLEMISC_ACTIVATEWHENVISIBLE                         = 256,
  243.     OLEMISC_RENDERINGISDEVICEINDEPENDENT        = 512
  244. } OLEMISC;
  245.  
  246.  
  247. // IOleObject::Close options
  248. typedef enum tagOLECLOSE
  249. {
  250.     OLECLOSE_SAVEIFDIRTY = 0,
  251.     OLECLOSE_NOSAVE      = 1,
  252.     OLECLOSE_PROMPTSAVE  = 2
  253. } OLECLOSE;
  254.  
  255.  
  256. // IOleObject::GetMoniker and IOleClientSite::GetMoniker options; determines
  257. // if and how monikers should be assigned.
  258. typedef enum tagOLEGETMONIKER
  259. {
  260.     OLEGETMONIKER_ONLYIFTHERE=1,
  261.     OLEGETMONIKER_FORCEASSIGN=2,
  262.     OLEGETMONIKER_UNASSIGN=3,
  263.     OLEGETMONIKER_TEMPFORUSER=4
  264. } OLEGETMONIKER;
  265.  
  266.  
  267. // IOleObject::GetMoniker, IOleObject::SetMoniker and
  268. // IOleClientSite::GetMoniker options; determines which moniker to use
  269. typedef enum tagOLEWHICHMK
  270. {
  271.     OLEWHICHMK_CONTAINER=1,
  272.     OLEWHICHMK_OBJREL=2,
  273.     OLEWHICHMK_OBJFULL=3
  274. } OLEWHICHMK;
  275.  
  276. #if !defined(__SIZEL_POINTL_RECTL_DEFINED)
  277. #define __SIZEL_POINTL_RECTL_DEFINED
  278. #ifdef WIN32
  279. #define LPSIZEL PSIZEL
  280. #else
  281. typedef struct FARSTRUCT tagSIZEL
  282. {
  283.     long cx;
  284.     long cy;
  285. } SIZEL, FAR* LPSIZEL;
  286. #endif
  287.  
  288. #ifdef WIN32
  289. #define LPRECTL PRECTL
  290. #else
  291. typedef struct FARSTRUCT tagRECTL
  292. {
  293.     long    left;
  294.     long    top;
  295.     long    right;
  296.     long    bottom;
  297. } RECTL, FAR* LPRECTL;
  298.  
  299. typedef struct FARSTRUCT tagPOINTL {
  300.     LONG x;
  301.     LONG y;
  302. } POINTL;
  303.  
  304. #endif
  305. #endif /* __SIZEL_POINTL_RECTL_DEFINED */
  306.  
  307. #ifndef LPCRECT
  308. typedef const RECT FAR* LPCRECT;
  309. #endif
  310.  
  311. #ifndef LPCRECTL
  312. typedef const RECTL FAR* LPCRECTL;
  313. #endif
  314.  
  315.  
  316. // for OleCreateEmbeddingHelper flags; roles in low word; options in high word
  317. #define EMBDHLP_INPROC_HANDLER   0x0000L // role is handler; implementation is
  318.                                          // default handler; pCF can be NULL
  319. #define EMBDHLP_INPROC_SERVER    0x0001L // role is server; pCF can't be NULL
  320.  
  321. #define EMBDHLP_CREATENOW    0x00000000L // create using pCF immediately; if pCF
  322.                                          // is NULL, uses std remoting handler
  323. #define EMBDHLP_DELAYCREATE  0x00010000L // delayed create; must supply pCF
  324.  
  325.  
  326. // NOTE: OleCreateEmbeddingHelper(clsid, pUnkOuter,
  327. //              EMBDHLP_INPROC_HANDLER | EMBDHLP_CREATENOW, NULL, riid, lplpObj)
  328. // is the same as OleCreateDefaultHandler(clsid, pUnkOuter, riid, lplpObj);
  329. // i.e., the embedding helper is the default handler in various roles.
  330.  
  331.  
  332. /***** OLE 1.0 OLESTREAM declarations *************************************/
  333.  
  334. typedef struct _OLESTREAM FAR*  LPOLESTREAM;
  335.  
  336. typedef struct _OLESTREAMVTBL
  337. {
  338.     DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
  339.     DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD);
  340. } OLESTREAMVTBL;
  341. typedef  OLESTREAMVTBL FAR*  LPOLESTREAMVTBL;
  342.  
  343. typedef struct _OLESTREAM
  344. {
  345.     LPOLESTREAMVTBL lpstbl;
  346. } OLESTREAM;
  347.  
  348.  
  349. /****** Clipboard Data structures *****************************************/
  350.  
  351. typedef struct tagOBJECTDESCRIPTOR
  352. {
  353.    ULONG    cbSize;              // Size of structure in bytes
  354.    CLSID    clsid;               // CLSID of data being transferred
  355.    DWORD    dwDrawAspect;        // Display aspect of the object
  356.                  //     normally DVASPECT_CONTENT or ICON.
  357.                  //     dwDrawAspect will be 0 (which is NOT
  358.                  //     DVASPECT_CONTENT) if the copier or
  359.                  //     dragsource didn't draw the object to
  360.                  //     begin with.
  361.    SIZEL    sizel;               // size of the object in HIMETRIC
  362.                  //    sizel is opt.: will be (0,0) for apps
  363.                  //    which don't draw the object being
  364.                  //    transferred
  365.    POINTL   pointl;              // Offset in HIMETRIC units from the
  366.                  //    upper-left corner of the obj where the
  367.                  //    mouse went down for the drag.
  368.                  //    NOTE: y coordinates increase downward.
  369.                  //          x coordinates increase to right
  370.                  //    pointl is opt.; it is only meaningful
  371.                  //    if object is transfered via drag/drop.
  372.                  //    (0, 0) if mouse position is unspecified
  373.                  //    (eg. when obj transfered via clipboard)
  374.    DWORD    dwStatus;            // Misc. status flags for object. Flags are
  375.                  //    defined by OLEMISC enum. these flags
  376.                  //    are as would be returned
  377.                  //    by IOleObject::GetMiscStatus.
  378.    DWORD    dwFullUserTypeName;  // Offset from beginning of structure to
  379.                  //    null-terminated string that specifies
  380.                  //    Full User Type Name of the object.
  381.                  //    0 indicates string not present.
  382.    DWORD    dwSrcOfCopy;         // Offset from beginning of structure to
  383.                  //    null-terminated string that specifies
  384.                  //    source of the transfer.
  385.                  //    dwSrcOfCOpy is normally implemented as
  386.                  //    the display name of the temp-for-user
  387.                  //    moniker which identifies the source of
  388.                  //    the data.
  389.                  //    0 indicates string not present.
  390.                  //    NOTE: moniker assignment is NOT forced.
  391.                  //    see IOleObject::GetMoniker(
  392.                  //                OLEGETMONIKER_TEMPFORUSER)
  393.  
  394.  /* variable sized string data may appear here */
  395.  
  396. } OBJECTDESCRIPTOR,  *POBJECTDESCRIPTOR,  FAR *LPOBJECTDESCRIPTOR,
  397.   LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, FAR *LPLINKSRCDESCRIPTOR;
  398.  
  399.  
  400.  
  401. /* verbs */
  402. #define OLEIVERB_PRIMARY            (0L)
  403. #define OLEIVERB_SHOW               (-1L)
  404. #define OLEIVERB_OPEN               (-2L)
  405. #define OLEIVERB_HIDE               (-3L)
  406. #define OLEIVERB_UIACTIVATE         (-4L)
  407. #define OLEIVERB_INPLACEACTIVATE    (-5L)
  408. #define OLEIVERB_DISCARDUNDOSTATE   (-6L)
  409.  
  410.  
  411. //      forward type declarations
  412. #if defined(__cplusplus)
  413. interface IOleClientSite;
  414. interface IOleContainer;
  415. interface IOleObject;
  416. #else
  417. typedef interface IOleClientSite IOleClientSite;
  418. typedef interface IOleContainer IOleContainer;
  419. typedef interface IOleObject IOleObject;
  420. #endif
  421.  
  422. typedef         IOleObject FAR* LPOLEOBJECT;
  423. typedef     IOleClientSite FAR* LPOLECLIENTSITE;
  424. typedef       IOleContainer FAR* LPOLECONTAINER;
  425.  
  426.  
  427. /****** OLE GUIDs *********************************************************/
  428.  
  429. #ifndef INITGUID
  430. #include "oleguid.h"
  431. #endif
  432.  
  433.  
  434. /****** Other Major Interfaces ********************************************/
  435.  
  436. #include <dvobj.h>
  437.  
  438. #include <storage.h>
  439.  
  440.  
  441.  
  442. /****** IDrop??? Interfaces ********************************************/
  443.  
  444. #define MK_ALT 0x0020
  445.  
  446.  
  447. #define DROPEFFECT_NONE     0
  448. #define DROPEFFECT_COPY     1
  449. #define DROPEFFECT_MOVE     2
  450. #define DROPEFFECT_LINK     4
  451. #define DROPEFFECT_SCROLL   0x80000000L
  452.  
  453. // default inset-width of the hot zone, in pixels
  454. //   typical use: GetProfileInt("windows","DragScrollInset",DD_DEFSCROLLINSET)
  455. #define DD_DEFSCROLLINSET               11
  456.  
  457. // default delay before scrolling, in milliseconds
  458. //   typical use: GetProfileInt("windows","DragScrollDelay",DD_DEFSCROLLDELAY)
  459. #define DD_DEFSCROLLDELAY               50
  460.  
  461. // default scroll interval, in milliseconds
  462. //   typical use: GetProfileInt("windows","DragScrollInterval",
  463. //                              DD_DEFSCROLLINTERVAL)
  464. #define DD_DEFSCROLLINTERVAL    50
  465.  
  466. // default delay before dragging should start, in milliseconds
  467. //   typical use: GetProfileInt("windows", "DragDelay", DD_DEFDRAGDELAY)
  468. #define DD_DEFDRAGDELAY         200
  469.  
  470. // default minimum distance (radius) before dragging should start, in pixels
  471. //   typical use: GetProfileInt("windows", "DragMinDist", DD_DEFDRAGMINDIST)
  472. #define DD_DEFDRAGMINDIST               2
  473.  
  474.  
  475.  
  476. /* Dragdrop specific error codes */
  477.  
  478. #define DRAGDROP_E_NOTREGISTERED        (DRAGDROP_E_FIRST)
  479. // trying to revoke a drop target that has not been registered
  480.  
  481. #define DRAGDROP_E_ALREADYREGISTERED    (DRAGDROP_E_FIRST+1)
  482. // this window has already been registered as a drop target
  483.  
  484. #define DRAGDROP_E_INVALIDHWND          (DRAGDROP_E_FIRST+2)
  485. // invalid HWND
  486.  
  487.  
  488. #define DRAGDROP_S_DROP                 (DRAGDROP_S_FIRST + 0)
  489. // successful drop took place
  490.  
  491. #define DRAGDROP_S_CANCEL               (DRAGDROP_S_FIRST + 1)
  492. // drag-drop operation canceled
  493.  
  494. #define DRAGDROP_S_USEDEFAULTCURSORS    (DRAGDROP_S_FIRST + 2)
  495. // use the default cursor
  496.  
  497.  
  498. #undef INTERFACE
  499. #define INTERFACE   IDropTarget
  500.  
  501. DECLARE_INTERFACE_(IDropTarget, IUnknown)
  502. {
  503.     // *** IUnknown methods ***
  504.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  505.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  506.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  507.  
  508.     // *** IDropTarget methods ***
  509.     STDMETHOD(DragEnter) (THIS_ LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE;
  510.     STDMETHOD(DragOver) (THIS_ DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE;
  511.     STDMETHOD(DragLeave) (THIS) PURE;
  512.     STDMETHOD(Drop) (THIS_ LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect) PURE;
  513. };
  514. typedef         IDropTarget FAR* LPDROPTARGET;
  515.  
  516.  
  517.  
  518. #undef INTERFACE
  519. #define INTERFACE   IDropSource
  520.  
  521. DECLARE_INTERFACE_(IDropSource, IUnknown)
  522. {
  523.     // *** IUnknown methods ***
  524.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  525.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  526.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  527.  
  528.     // *** IDropSource methods ***
  529.     STDMETHOD(QueryContinueDrag) (THIS_ BOOL fEscapePressed, DWORD grfKeyState) PURE;
  530.     STDMETHOD(GiveFeedback) (THIS_ DWORD dwEffect) PURE;
  531. };
  532. typedef         IDropSource FAR* LPDROPSOURCE;
  533.  
  534.  
  535.  
  536. /****** IPersist??? Interfaces ********************************************/
  537.  
  538.  
  539. #undef INTERFACE
  540. #define INTERFACE   IPersist
  541.  
  542. DECLARE_INTERFACE_(IPersist, IUnknown)
  543. {
  544.     // *** IUnknown methods ***
  545.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  546.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  547.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  548.  
  549.     // *** IPersist methods ***
  550.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  551. };
  552. typedef            IPersist FAR* LPPERSIST;
  553.  
  554.  
  555.  
  556. #undef INTERFACE
  557. #define INTERFACE   IPersistStorage
  558.  
  559. DECLARE_INTERFACE_(IPersistStorage, IPersist)
  560. {
  561.     // *** IUnknown methods ***
  562.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  563.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  564.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  565.  
  566.     // *** IPersist methods ***
  567.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  568.  
  569.     // *** IPersistStorage methods ***
  570.     STDMETHOD(IsDirty) (THIS) PURE;
  571.     STDMETHOD(InitNew) (THIS_ LPSTORAGE pStg) PURE;
  572.     STDMETHOD(Load) (THIS_ LPSTORAGE pStg) PURE;
  573.     STDMETHOD(Save) (THIS_ LPSTORAGE pStgSave, BOOL fSameAsLoad) PURE;
  574.     STDMETHOD(SaveCompleted) (THIS_ LPSTORAGE pStgNew) PURE;
  575.     STDMETHOD(HandsOffStorage) (THIS) PURE;
  576. };
  577. typedef         IPersistStorage FAR* LPPERSISTSTORAGE;
  578.  
  579.  
  580.  
  581. #undef INTERFACE
  582. #define INTERFACE   IPersistStream
  583.  
  584. DECLARE_INTERFACE_(IPersistStream, IPersist)
  585. {
  586.     // *** IUnknown methods ***
  587.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  588.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  589.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  590.  
  591.     // *** IPersist methods ***
  592.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  593.  
  594.     // *** IPersistStream methods ***
  595.     STDMETHOD(IsDirty) (THIS) PURE;
  596.     STDMETHOD(Load) (THIS_ LPSTREAM pStm) PURE;
  597.     STDMETHOD(Save) (THIS_ LPSTREAM pStm,
  598.             BOOL fClearDirty) PURE;
  599.     STDMETHOD(GetSizeMax) (THIS_ ULARGE_INTEGER FAR* pcbSize) PURE;
  600. };
  601. typedef          IPersistStream FAR* LPPERSISTSTREAM;
  602.  
  603.  
  604.  
  605. #undef INTERFACE
  606. #define INTERFACE   IPersistFile
  607.  
  608. DECLARE_INTERFACE_(IPersistFile, IPersist)
  609. {
  610.     // *** IUnknown methods ***
  611.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  612.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  613.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  614.  
  615.     // *** IPersist methods ***
  616.     STDMETHOD(GetClassID) (THIS_ LPCLSID lpClassID) PURE;
  617.  
  618.     // *** IPersistFile methods ***
  619.     STDMETHOD(IsDirty) (THIS) PURE;
  620.     STDMETHOD(Load) (THIS_ LPCSTR lpszFileName, DWORD grfMode) PURE;
  621.     STDMETHOD(Save) (THIS_ LPCSTR lpszFileName, BOOL fRemember) PURE;
  622.     STDMETHOD(SaveCompleted) (THIS_ LPCSTR lpszFileName) PURE;
  623.     STDMETHOD(GetCurFile) (THIS_ LPSTR FAR* lplpszFileName) PURE;
  624. };
  625. typedef            IPersistFile FAR* LPPERSISTFILE;
  626.  
  627.  
  628. /****** Moniker Object Interfaces ******************************************/
  629.  
  630. #include <moniker.h>
  631.  
  632.  
  633. /****** OLE Object Interfaces ******************************************/
  634.  
  635.  
  636. #undef  INTERFACE
  637. #define INTERFACE   IEnumOLEVERB
  638.  
  639. DECLARE_INTERFACE_(IEnumOLEVERB, IUnknown)
  640. {
  641.     // *** IUnknown methods ***
  642.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  643.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  644.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  645.  
  646.     // *** IEnumOLEVERB methods ***
  647.     STDMETHOD(Next) (THIS_ ULONG celt, LPOLEVERB rgelt, ULONG FAR* pceltFetched) PURE;
  648.     STDMETHOD(Skip) (THIS_ ULONG celt) PURE;
  649.     STDMETHOD(Reset) (THIS) PURE;
  650.     STDMETHOD(Clone) (THIS_ IEnumOLEVERB FAR* FAR* ppenm) PURE;
  651. };
  652. typedef         IEnumOLEVERB FAR* LPENUMOLEVERB;
  653.  
  654.  
  655.  
  656.  
  657. #undef  INTERFACE
  658. #define INTERFACE   IOleObject
  659.  
  660. #define OLEOBJ_E_NOVERBS                (OLEOBJ_E_FIRST + 0)
  661.  
  662. #define OLEOBJ_E_INVALIDVERB            (OLEOBJ_E_FIRST + 1)
  663.  
  664. #define OLEOBJ_S_INVALIDVERB            (OLEOBJ_S_FIRST + 0)
  665.  
  666. #define OLEOBJ_S_CANNOT_DOVERB_NOW      (OLEOBJ_S_FIRST + 1)
  667. // verb number is valid but verb cannot be done now, for instance
  668. // hiding a link or hiding a visible OLE 1.0 server
  669.  
  670. #define OLEOBJ_S_INVALIDHWND            (OLEOBJ_S_FIRST + 2)
  671. // invalid hwnd passed
  672.  
  673.  
  674. DECLARE_INTERFACE_(IOleObject, IUnknown)
  675. {
  676.     // *** IUnknown methods ***
  677.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  678.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  679.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  680.  
  681.     // *** IOleObject methods ***
  682.     STDMETHOD(SetClientSite) (THIS_ LPOLECLIENTSITE pClientSite) PURE;
  683.     STDMETHOD(GetClientSite) (THIS_ LPOLECLIENTSITE FAR* ppClientSite) PURE;
  684.     STDMETHOD(SetHostNames) (THIS_ LPCSTR szContainerApp, LPCSTR szContainerObj) PURE;
  685.     STDMETHOD(Close) (THIS_ DWORD dwSaveOption) PURE;
  686.     STDMETHOD(SetMoniker) (THIS_ DWORD dwWhichMoniker, LPMONIKER pmk) PURE;
  687.     STDMETHOD(GetMoniker) (THIS_ DWORD dwAssign, DWORD dwWhichMoniker,
  688.         LPMONIKER FAR* ppmk) PURE;
  689.     STDMETHOD(InitFromData) (THIS_ LPDATAOBJECT pDataObject,
  690.         BOOL fCreation,
  691.         DWORD dwReserved) PURE;
  692.     STDMETHOD(GetClipboardData) (THIS_ DWORD dwReserved,
  693.         LPDATAOBJECT FAR* ppDataObject) PURE;
  694.     STDMETHOD(DoVerb) (THIS_ LONG iVerb,
  695.         LPMSG lpmsg,
  696.         LPOLECLIENTSITE pActiveSite,
  697.         LONG lindex,
  698.         HWND hwndParent,
  699.         LPCRECT lprcPosRect) PURE;
  700.     STDMETHOD(EnumVerbs) (THIS_ LPENUMOLEVERB FAR* ppenumOleVerb) PURE;
  701.     STDMETHOD(Update) (THIS) PURE;
  702.     STDMETHOD(IsUpToDate) (THIS) PURE;
  703.     STDMETHOD(GetUserClassID) (THIS_ CLSID FAR* pClsid) PURE;
  704.     STDMETHOD(GetUserType) (THIS_ DWORD dwFormOfType, LPSTR FAR* pszUserType) PURE;
  705.     STDMETHOD(SetExtent) (THIS_ DWORD dwDrawAspect, LPSIZEL lpsizel) PURE;
  706.     STDMETHOD(GetExtent) (THIS_ DWORD dwDrawAspect, LPSIZEL lpsizel) PURE;
  707.  
  708.     STDMETHOD(Advise)(THIS_ LPADVISESINK pAdvSink, DWORD FAR* pdwConnection) PURE;
  709.     STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE;
  710.     STDMETHOD(EnumAdvise) (THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
  711.     STDMETHOD(GetMiscStatus) (THIS_ DWORD dwAspect, DWORD FAR* pdwStatus) PURE;
  712.     STDMETHOD(SetColorScheme) (THIS_ LPLOGPALETTE lpLogpal) PURE;
  713. };
  714. typedef      IOleObject FAR* LPOLEOBJECT;
  715.  
  716.  
  717.  
  718. #undef  INTERFACE
  719. #define INTERFACE   IOleClientSite
  720.  
  721. DECLARE_INTERFACE_(IOleClientSite, IUnknown)
  722. {
  723.     // *** IUnknown methods ***
  724.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  725.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  726.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  727.  
  728.     // *** IOleClientSite methods ***
  729.     STDMETHOD(SaveObject) (THIS) PURE;
  730.     STDMETHOD(GetMoniker) (THIS_ DWORD dwAssign, DWORD dwWhichMoniker,
  731.         LPMONIKER FAR* ppmk) PURE;
  732.     STDMETHOD(GetContainer) (THIS_ LPOLECONTAINER FAR* ppContainer) PURE;
  733.     STDMETHOD(ShowObject) (THIS) PURE;
  734.     STDMETHOD(OnShowWindow) (THIS_ BOOL fShow) PURE;
  735.     STDMETHOD(RequestNewObjectLayout) (THIS) PURE;
  736. };
  737. typedef      IOleClientSite FAR* LPOLECLIENTSITE;
  738.  
  739.  
  740. /****** OLE Runnable Object Interface **********************************/
  741.  
  742. #undef  INTERFACE
  743. #define INTERFACE       IRunnableObject
  744.  
  745. DECLARE_INTERFACE_(IRunnableObject, IUnknown)
  746. {
  747.     // *** IUnknown methods ***
  748.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  749.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  750.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  751.  
  752.     // *** IRunnableObject methods ***
  753.     STDMETHOD(GetRunningClass) (THIS_ LPCLSID lpClsid) PURE;
  754.     STDMETHOD(Run) (THIS_ LPBINDCTX pbc) PURE;
  755.     STDMETHOD_(BOOL, IsRunning) (THIS) PURE;
  756.     STDMETHOD(LockRunning)(THIS_ BOOL fLock, BOOL fLastUnlockCloses) PURE;
  757.     STDMETHOD(SetContainedObject)(THIS_ BOOL fContained) PURE;
  758. };
  759. typedef      IRunnableObject FAR* LPRUNNABLEOBJECT;
  760.  
  761.  
  762. /****** OLE Container Interfaces ***************************************/
  763.  
  764.  
  765. #undef  INTERFACE
  766. #define INTERFACE   IParseDisplayName
  767.  
  768. DECLARE_INTERFACE_(IParseDisplayName, IUnknown)
  769. {
  770.     // *** IUnknown methods ***
  771.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  772.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  773.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  774.  
  775.     // *** IParseDisplayName method ***
  776.     STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName,
  777.     ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE;
  778. };
  779. typedef       IParseDisplayName FAR* LPPARSEDISPLAYNAME;
  780.  
  781.  
  782. #undef  INTERFACE
  783. #define INTERFACE   IOleContainer
  784.  
  785. DECLARE_INTERFACE_(IOleContainer, IParseDisplayName)
  786. {
  787.     // *** IUnknown methods ***
  788.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  789.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  790.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  791.  
  792.     // *** IParseDisplayName method ***
  793.     STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName,
  794.     ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE;
  795.  
  796.     // *** IOleContainer methods ***
  797.     STDMETHOD(EnumObjects) ( DWORD grfFlags, LPENUMUNKNOWN FAR* ppenumUnknown) PURE;
  798.     STDMETHOD(LockContainer) (THIS_ BOOL fLock) PURE;
  799. };
  800. typedef IOleContainer FAR* LPOLECONTAINER;
  801.  
  802.  
  803. typedef enum tagBINDSPEED
  804. {
  805.     BINDSPEED_INDEFINITE    = 1,
  806.     BINDSPEED_MODERATE      = 2,
  807.     BINDSPEED_IMMEDIATE     = 3
  808. } BINDSPEED;
  809.  
  810. typedef enum tagOLECONTF
  811. {
  812.     OLECONTF_EMBEDDINGS     =  1,
  813.     OLECONTF_LINKS          =  2,
  814.     OLECONTF_OTHERS         =  4,
  815.     OLECONTF_ONLYUSER       =  8,
  816.     OLECONTF_ONLYIFRUNNING  = 16
  817. } OLECONTF;
  818.  
  819.  
  820. #undef  INTERFACE
  821. #define INTERFACE   IOleItemContainer
  822.  
  823. DECLARE_INTERFACE_(IOleItemContainer, IOleContainer)
  824. {
  825.     // *** IUnknown methods ***
  826.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  827.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  828.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  829.  
  830.     // *** IParseDisplayName method ***
  831.     STDMETHOD(ParseDisplayName) (THIS_ LPBC pbc, LPSTR lpszDisplayName,
  832.     ULONG FAR* pchEaten, LPMONIKER FAR* ppmkOut) PURE;
  833.  
  834.     // *** IOleContainer methods ***
  835.     STDMETHOD(EnumObjects) (THIS_ DWORD grfFlags, LPENUMUNKNOWN FAR* ppenumUnknown) PURE;
  836.     STDMETHOD(LockContainer) (THIS_ BOOL fLock) PURE;
  837.  
  838.     // *** IOleItemContainer methods ***
  839.     STDMETHOD(GetObject) (THIS_ LPSTR lpszItem, DWORD dwSpeedNeeded,
  840.     LPBINDCTX pbc, REFIID riid, LPVOID FAR* ppvObject) PURE;
  841.     STDMETHOD(GetObjectStorage) (THIS_ LPSTR lpszItem, LPBINDCTX pbc,
  842.     REFIID riid, LPVOID FAR* ppvStorage) PURE;
  843.     STDMETHOD(IsRunning) (THIS_ LPSTR lpszItem) PURE;
  844. };
  845. typedef       IOleItemContainer FAR* LPOLEITEMCONTAINER;
  846.  
  847.  
  848. /****** OLE Advise Holder Interface ***************************************/
  849.  
  850.  
  851. #undef  INTERFACE
  852. #define INTERFACE   IOleAdviseHolder
  853.  
  854. DECLARE_INTERFACE_(IOleAdviseHolder, IUnknown)
  855. {
  856.     // *** IUnknown methods ***
  857.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppv) PURE;
  858.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  859.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  860.  
  861.     // *** IOleAdviseHolder methods ***
  862.     STDMETHOD(Advise)(THIS_ LPADVISESINK pAdvise, DWORD FAR* pdwConnection) PURE;
  863.     STDMETHOD(Unadvise)(THIS_ DWORD dwConnection) PURE;
  864.     STDMETHOD(EnumAdvise)(THIS_ LPENUMSTATDATA FAR* ppenumAdvise) PURE;
  865.  
  866.     STDMETHOD(SendOnRename)(THIS_ LPMONIKER pmk) PURE;
  867.     STDMETHOD(SendOnSave)(THIS) PURE;
  868.     STDMETHOD(SendOnClose)(THIS) PURE;
  869. };
  870. typedef      IOleAdviseHolder FAR* LPOLEADVISEHOLDER;
  871.  
  872.  
  873. /****** OLE Link Interface ************************************************/
  874.  
  875. /* Link update options */
  876. typedef enum tagOLEUPDATE
  877. {
  878.     OLEUPDATE_ALWAYS=1,
  879.     OLEUPDATE_ONCALL=3
  880. } OLEUPDATE;
  881. typedef  OLEUPDATE FAR* LPOLEUPDATE;
  882.  
  883.  
  884. // for IOleLink::BindToSource
  885. typedef enum tagOLELINKBIND
  886. {
  887.     OLELINKBIND_EVENIFCLASSDIFF = 1,
  888. } OLELINKBIND;
  889.  
  890.  
  891. #undef  INTERFACE
  892. #define INTERFACE   IOleLink
  893.  
  894. DECLARE_INTERFACE_(IOleLink, IUnknown)
  895. {
  896.     // *** IUnknown methods ***
  897.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  898.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  899.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  900.  
  901.     // *** IOleLink methods ***
  902.     STDMETHOD(SetUpdateOptions) (THIS_ DWORD dwUpdateOpt) PURE;
  903.     STDMETHOD(GetUpdateOptions) (THIS_ LPDWORD pdwUpdateOpt) PURE;
  904.     STDMETHOD(SetSourceMoniker) (THIS_ LPMONIKER pmk, REFCLSID rclsid) PURE;
  905.     STDMETHOD(GetSourceMoniker) (THIS_ LPMONIKER FAR* ppmk) PURE;
  906.     STDMETHOD(SetSourceDisplayName) (THIS_ LPCSTR lpszDisplayName) PURE;
  907.     STDMETHOD(GetSourceDisplayName) (THIS_ LPSTR FAR* lplpszDisplayName) PURE;
  908.     STDMETHOD(BindToSource) (THIS_ DWORD bindflags, LPBINDCTX pbc) PURE;
  909.     STDMETHOD(BindIfRunning) (THIS) PURE;
  910.     STDMETHOD(GetBoundSource) (THIS_ LPUNKNOWN FAR* ppUnk) PURE;
  911.     STDMETHOD(UnbindSource) (THIS) PURE;
  912.     STDMETHOD(Update) (THIS_ LPBINDCTX pbc) PURE;
  913. };
  914. typedef         IOleLink FAR* LPOLELINK;
  915.  
  916.  
  917. /****** OLE InPlace Editing Interfaces ************************************/
  918.  
  919. #ifdef _MAC
  920. typedef Handle  HOLEMENU;
  921. typedef long    SIZE;
  922. typedef long    HACCEL;
  923. #else
  924. DECLARE_HANDLE(HOLEMENU);
  925. #endif
  926.  
  927. typedef struct FARSTRUCT tagOIFI          // OleInPlaceFrameInfo
  928. {
  929.     UINT    cb;
  930.     BOOL    fMDIApp;
  931.     HWND    hwndFrame;
  932.     HACCEL  haccel;
  933.     int     cAccelEntries;
  934. } OLEINPLACEFRAMEINFO, FAR* LPOLEINPLACEFRAMEINFO;
  935.  
  936.  
  937. typedef struct FARSTRUCT tagOleMenuGroupWidths
  938. {
  939.     LONG    width[6];
  940. } OLEMENUGROUPWIDTHS, FAR* LPOLEMENUGROUPWIDTHS;
  941.  
  942. typedef RECT    BORDERWIDTHS;
  943. typedef LPRECT  LPBORDERWIDTHS;
  944. typedef LPCRECT LPCBORDERWIDTHS;
  945.  
  946. /* Inplace editing specific error codes */
  947.  
  948. #define INPLACE_E_NOTUNDOABLE   (INPLACE_E_FIRST)
  949. // undo is not avaiable
  950.  
  951. #define INPLACE_E_NOTOOLSPACE       (INPLACE_E_FIRST+1)
  952. // Space for tools is not available
  953.  
  954. #define INPLACE_S_TRUNCATED     (INPLACE_S_FIRST)
  955. // Message is too long, some of it had to be truncated before displaying
  956.  
  957. //misc definitions
  958. #define INPLACE_DEFBORDERWIDTH  4
  959.  
  960. //      forward type declarations
  961. #if defined(__cplusplus)
  962. interface IOleInPlaceUIWindow;
  963. #else
  964. typedef interface IOleInPlaceUIWindow IOleInPlaceUIWindow;
  965. #endif
  966.  
  967. typedef     IOleInPlaceUIWindow FAR* LPOLEINPLACEUIWINDOW;
  968.  
  969.  
  970. #undef  INTERFACE
  971. #define INTERFACE   IOleWindow
  972.  
  973. DECLARE_INTERFACE_(IOleWindow, IUnknown)
  974. {
  975.     // *** IUnknown methods ***
  976.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  977.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  978.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  979.  
  980.     // *** IOleWindow methods ***
  981.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  982.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  983. };
  984.  
  985. typedef         IOleWindow FAR* LPOLEWINDOW;
  986.  
  987.  
  988.  
  989. #undef  INTERFACE
  990. #define INTERFACE   IOleInPlaceObject
  991.  
  992. DECLARE_INTERFACE_(IOleInPlaceObject, IOleWindow)
  993. {
  994.     // *** IUnknown methods ***
  995.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  996.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  997.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  998.  
  999.     // *** IOleWindow methods ***
  1000.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  1001.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  1002.  
  1003.     // *** IOleInPlaceObject methods ***
  1004.     STDMETHOD(InPlaceDeactivate) (THIS) PURE;
  1005.     STDMETHOD(UIDeactivate) (THIS) PURE;
  1006.     STDMETHOD(SetObjectRects) (THIS_ LPCRECT lprcPosRect,
  1007.             LPCRECT lprcClipRect) PURE;
  1008.     STDMETHOD(ReactivateAndUndo) (THIS) PURE;
  1009. };
  1010. typedef         IOleInPlaceObject FAR* LPOLEINPLACEOBJECT;
  1011.  
  1012.  
  1013.  
  1014. #undef  INTERFACE
  1015. #define INTERFACE   IOleInPlaceActiveObject
  1016.  
  1017. DECLARE_INTERFACE_(IOleInPlaceActiveObject, IOleWindow)
  1018. {
  1019.    // *** IUnknown methods ***
  1020.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1021.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  1022.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1023.  
  1024.     // *** IOleWindow methods ***
  1025.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  1026.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  1027.  
  1028.     // *** IOleInPlaceActiveObject methods ***
  1029.     STDMETHOD(TranslateAccelerator) (THIS_ LPMSG lpmsg) PURE;
  1030.     STDMETHOD(OnFrameWindowActivate) (THIS_ BOOL fActivate) PURE;
  1031.     STDMETHOD(OnDocWindowActivate) (THIS_ BOOL fActivate) PURE;
  1032.     STDMETHOD(ResizeBorder) (THIS_ LPCRECT lprectBorder, LPOLEINPLACEUIWINDOW lpUIWindow, BOOL fFrameWindow) PURE;
  1033.     STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE;
  1034. };
  1035. typedef         IOleInPlaceActiveObject FAR* LPOLEINPLACEACTIVEOBJECT;
  1036.  
  1037.  
  1038.  
  1039. #undef  INTERFACE
  1040. #define INTERFACE   IOleInPlaceUIWindow
  1041.  
  1042. DECLARE_INTERFACE_(IOleInPlaceUIWindow, IOleWindow)
  1043. {
  1044.    // *** IUnknown methods ***
  1045.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1046.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  1047.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1048.  
  1049.     // *** IOleWindow methods ***
  1050.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  1051.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  1052.  
  1053.     // *** IOleInPlaceUIWindow methods ***
  1054.     STDMETHOD(GetBorder) (THIS_ LPRECT lprectBorder) PURE;
  1055.     STDMETHOD(RequestBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
  1056.     STDMETHOD(SetBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
  1057.     STDMETHOD(SetActiveObject) (THIS_ LPOLEINPLACEACTIVEOBJECT lpActiveObject,
  1058.             LPCSTR lpszObjName) PURE;
  1059. };
  1060. typedef     IOleInPlaceUIWindow FAR* LPOLEINPLACEUIWINDOW;
  1061.  
  1062.  
  1063.  
  1064. #undef  INTERFACE
  1065. #define INTERFACE   IOleInPlaceFrame
  1066.  
  1067. DECLARE_INTERFACE_(IOleInPlaceFrame, IOleInPlaceUIWindow)
  1068. {
  1069.    // *** IUnknown methods ***
  1070.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1071.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  1072.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1073.  
  1074.     // *** IOleWindow methods ***
  1075.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  1076.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  1077.  
  1078.     // *** IOleInPlaceUIWindow methods ***
  1079.     STDMETHOD(GetBorder) (THIS_ LPRECT lprectBorder) PURE;
  1080.     STDMETHOD(RequestBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
  1081.     STDMETHOD(SetBorderSpace) (THIS_ LPCBORDERWIDTHS lpborderwidths) PURE;
  1082.     STDMETHOD(SetActiveObject) (THIS_ LPOLEINPLACEACTIVEOBJECT lpActiveObject,
  1083.             LPCSTR lpszObjName) PURE;
  1084.  
  1085.  
  1086.     // *** IOleInPlaceFrame methods ***
  1087.     STDMETHOD(InsertMenus) (THIS_ HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths) PURE;
  1088.     STDMETHOD(SetMenu) (THIS_ HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject) PURE;
  1089.     STDMETHOD(RemoveMenus) (THIS_ HMENU hmenuShared) PURE;
  1090.     STDMETHOD(SetStatusText) (THIS_ LPCSTR lpszStatusText) PURE;
  1091.     STDMETHOD(EnableModeless) (THIS_ BOOL fEnable) PURE;
  1092.     STDMETHOD(TranslateAccelerator) (THIS_ LPMSG lpmsg, WORD wID) PURE;
  1093. };
  1094. typedef     IOleInPlaceFrame FAR* LPOLEINPLACEFRAME;
  1095.  
  1096.  
  1097. #undef  INTERFACE
  1098. #define INTERFACE   IOleInPlaceSite
  1099.  
  1100. DECLARE_INTERFACE_(IOleInPlaceSite, IOleWindow)
  1101. {
  1102.    // *** IUnknown methods ***
  1103.     STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1104.     STDMETHOD_(ULONG,AddRef) (THIS)  PURE;
  1105.     STDMETHOD_(ULONG,Release) (THIS) PURE;
  1106.  
  1107.     // *** IOleWindow methods ***
  1108.     STDMETHOD(GetWindow) (THIS_ HWND FAR* lphwnd) PURE;
  1109.     STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
  1110.  
  1111.     // *** IOleInPlaceSite methods ***
  1112.     STDMETHOD(CanInPlaceActivate) (THIS) PURE;
  1113.     STDMETHOD(OnInPlaceActivate) (THIS) PURE;
  1114.     STDMETHOD(OnUIActivate) (THIS) PURE;
  1115.     STDMETHOD(GetWindowContext) (THIS_ LPOLEINPLACEFRAME FAR* lplpFrame,
  1116.             LPOLEINPLACEUIWINDOW FAR* lplpDoc,
  1117.             LPRECT lprcPosRect,
  1118.             LPRECT lprcClipRect,
  1119.             LPOLEINPLACEFRAMEINFO lpFrameInfo) PURE;
  1120.     STDMETHOD(Scroll) (THIS_ SIZE scrollExtent) PURE;
  1121.     STDMETHOD(OnUIDeactivate) (THIS_ BOOL fUndoable) PURE;
  1122.     STDMETHOD(OnInPlaceDeactivate) (THIS) PURE;
  1123.     STDMETHOD(DiscardUndoState) (THIS) PURE;
  1124.     STDMETHOD(DeactivateAndUndo) (THIS) PURE;
  1125.     STDMETHOD(OnPosRectChange) (THIS_ LPCRECT lprcPosRect) PURE;
  1126. };
  1127. typedef         IOleInPlaceSite FAR* LPOLEINPLACESITE;
  1128.  
  1129.  
  1130.  
  1131. /****** OLE API Prototypes ************************************************/
  1132.  
  1133. STDAPI_(DWORD) OleBuildVersion( VOID );
  1134.  
  1135. /* helper functions */
  1136. STDAPI ReadClassStg(LPSTORAGE pStg, CLSID FAR* pclsid);
  1137. STDAPI WriteClassStg(LPSTORAGE pStg, REFCLSID rclsid);
  1138. STDAPI ReadClassStm(LPSTREAM pStm, CLSID FAR* pclsid);
  1139. STDAPI WriteClassStm(LPSTREAM pStm, REFCLSID rclsid);
  1140. STDAPI WriteFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT cf, LPSTR lpszUserType);
  1141. STDAPI ReadFmtUserTypeStg (LPSTORAGE pstg, CLIPFORMAT FAR* pcf, LPSTR FAR* lplpszUserType);
  1142.  
  1143.  
  1144. /* init/term */
  1145.  
  1146. STDAPI OleInitialize(LPMALLOC pMalloc);
  1147. STDAPI_(void) OleUninitialize(void);
  1148.  
  1149.  
  1150. /* APIs to query whether (Embedded/Linked) object can be created from
  1151.    the data object */
  1152.  
  1153. STDAPI  OleQueryLinkFromData(LPDATAOBJECT pSrcDataObject);
  1154. STDAPI  OleQueryCreateFromData(LPDATAOBJECT pSrcDataObject);
  1155.         
  1156.  
  1157. /* Object creation APIs */
  1158.  
  1159. STDAPI  OleCreate(REFCLSID rclsid, REFIID riid, DWORD renderopt,
  1160.         LPFORMATETC pFormatEtc, LPOLECLIENTSITE pClientSite,
  1161.         LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1162.  
  1163. STDAPI  OleCreateFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
  1164.         DWORD renderopt, LPFORMATETC pFormatEtc,
  1165.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  1166.         LPVOID FAR* ppvObj);
  1167.  
  1168. STDAPI  OleCreateLinkFromData(LPDATAOBJECT pSrcDataObj, REFIID riid,
  1169.         DWORD renderopt, LPFORMATETC pFormatEtc,
  1170.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  1171.         LPVOID FAR* ppvObj);
  1172.  
  1173. STDAPI  OleCreateStaticFromData(LPDATAOBJECT pSrcDataObj, REFIID iid,
  1174.         DWORD renderopt, LPFORMATETC pFormatEtc,
  1175.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg,
  1176.         LPVOID FAR* ppvObj);
  1177.  
  1178.         
  1179. STDAPI  OleCreateLink(LPMONIKER pmkLinkSrc, REFIID riid,
  1180.         DWORD renderopt, LPFORMATETC lpFormatEtc,
  1181.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1182.  
  1183. STDAPI  OleCreateLinkToFile(LPCSTR lpszFileName, REFIID riid,
  1184.         DWORD renderopt, LPFORMATETC lpFormatEtc,
  1185.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1186.     
  1187. STDAPI  OleCreateFromFile(REFCLSID rclsid, LPCSTR lpszFileName, REFIID riid,
  1188.         DWORD renderopt, LPFORMATETC lpFormatEtc,
  1189.         LPOLECLIENTSITE pClientSite, LPSTORAGE pStg, LPVOID FAR* ppvObj);
  1190.  
  1191. STDAPI  OleLoad(LPSTORAGE pStg, REFIID riid, LPOLECLIENTSITE pClientSite,
  1192.         LPVOID FAR* ppvObj);
  1193.     
  1194. STDAPI  OleSave(LPPERSISTSTORAGE pPS, LPSTORAGE pStg, BOOL fSameAsLoad);
  1195.  
  1196. STDAPI  OleLoadFromStream( LPSTREAM pStm, REFIID iidInterface, LPVOID FAR* ppvObj);
  1197. STDAPI  OleSaveToStream( LPPERSISTSTREAM pPStm, LPSTREAM pStm );
  1198.  
  1199.  
  1200. STDAPI  OleSetContainedObject(LPUNKNOWN pUnknown, BOOL fContained);
  1201. STDAPI  OleNoteObjectVisible(LPUNKNOWN pUnknown, BOOL fVisible);
  1202.  
  1203.  
  1204. /* Drag/Drop APIs */
  1205.  
  1206. STDAPI  RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget);
  1207. STDAPI  RevokeDragDrop(HWND hwnd);
  1208. STDAPI  DoDragDrop(LPDATAOBJECT pDataObj, LPDROPSOURCE pDropSource,
  1209.         DWORD dwOKEffects, LPDWORD pdwEffect);
  1210.  
  1211. /* Clipboard APIs */
  1212.  
  1213. STDAPI  OleSetClipboard(LPDATAOBJECT pDataObj);
  1214. STDAPI  OleGetClipboard(LPDATAOBJECT FAR* ppDataObj);
  1215. STDAPI  OleFlushClipboard(void);
  1216. STDAPI  OleIsCurrentClipboard(LPDATAOBJECT pDataObj);
  1217.  
  1218.  
  1219. /* InPlace Editing APIs */
  1220.  
  1221. STDAPI_(HOLEMENU)   OleCreateMenuDescriptor (HMENU hmenuCombined,
  1222.                 LPOLEMENUGROUPWIDTHS lpMenuWidths);
  1223. STDAPI              OleSetMenuDescriptor (HOLEMENU holemenu, HWND hwndFrame,
  1224.                 HWND hwndActiveObject,
  1225.                 LPOLEINPLACEFRAME lpFrame,
  1226.                 LPOLEINPLACEACTIVEOBJECT lpActiveObj);
  1227. STDAPI              OleDestroyMenuDescriptor (HOLEMENU holemenu);
  1228.  
  1229. STDAPI              OleTranslateAccelerator (LPOLEINPLACEFRAME lpFrame,
  1230.                 LPOLEINPLACEFRAMEINFO lpFrameInfo, LPMSG lpmsg);
  1231.                 
  1232.                 
  1233. /* Helper APIs */
  1234. STDAPI_(HANDLE) OleDuplicateData (HANDLE hSrc, CLIPFORMAT cfFormat,
  1235.             UINT uiFlags);
  1236.  
  1237. STDAPI          OleDraw (LPUNKNOWN pUnknown, DWORD dwAspect, HDC hdcDraw,
  1238.             LPCRECT lprcBounds);
  1239.             
  1240. STDAPI          OleRun(LPUNKNOWN pUnknown);
  1241. STDAPI_(BOOL)   OleIsRunning(LPOLEOBJECT pObject);
  1242. STDAPI          OleLockRunning(LPUNKNOWN pUnknown, BOOL fLock, BOOL fLastUnlockCloses);
  1243.  
  1244. STDAPI_(void)   ReleaseStgMedium(LPSTGMEDIUM);
  1245. STDAPI          CreateOleAdviseHolder(LPOLEADVISEHOLDER FAR* ppOAHolder);
  1246.  
  1247. STDAPI          OleCreateDefaultHandler(REFCLSID clsid, LPUNKNOWN pUnkOuter,
  1248.             REFIID riid, LPVOID FAR* lplpObj);
  1249.  
  1250. STDAPI          OleCreateEmbeddingHelper(REFCLSID clsid, LPUNKNOWN pUnkOuter,
  1251.             DWORD flags, LPCLASSFACTORY pCF,
  1252.                     REFIID riid, LPVOID FAR* lplpObj);
  1253.                     
  1254. STDAPI_(BOOL)   IsAccelerator(HACCEL hAccel, int cAccelEntries, LPMSG lpMsg,
  1255.                     WORD FAR* lpwCmd);
  1256.  
  1257.                     
  1258. /* Icon extraction Helper APIs */
  1259.                     
  1260. STDAPI_(HGLOBAL) OleGetIconOfFile(LPSTR lpszPath, BOOL fUseFileAsLabel);
  1261.  
  1262. STDAPI_(HGLOBAL) OleGetIconOfClass(REFCLSID rclsid,     LPSTR lpszLabel,
  1263.                     BOOL fUseTypeAsLabel);
  1264.  
  1265. STDAPI_(HGLOBAL) OleMetafilePictFromIconAndLabel(HICON hIcon, LPSTR lpszLabel,
  1266.                     LPSTR lpszSourceFile, UINT iIconIndex);
  1267.  
  1268.  
  1269.                     
  1270. /* Registration Database Helper APIs */
  1271.  
  1272. STDAPI                  OleRegGetUserType (REFCLSID clsid, DWORD dwFormOfType,
  1273.                     LPSTR FAR* pszUserType);
  1274.  
  1275. STDAPI                  OleRegGetMiscStatus     (REFCLSID clsid, DWORD dwAspect,
  1276.                     DWORD FAR* pdwStatus);
  1277.  
  1278. STDAPI                  OleRegEnumFormatEtc     (REFCLSID clsid, DWORD dwDirection,
  1279.                     LPENUMFORMATETC FAR* ppenum);
  1280.  
  1281. STDAPI                  OleRegEnumVerbs (REFCLSID clsid, LPENUMOLEVERB FAR* ppenum);
  1282.  
  1283.  
  1284.  
  1285. /* OLE 1.0 conversion APIS */
  1286.  
  1287. STDAPI OleConvertIStorageToOLESTREAM
  1288.     (LPSTORAGE                  pstg,
  1289.      LPOLESTREAM            polestm);
  1290.  
  1291. STDAPI OleConvertOLESTREAMToIStorage
  1292.     (LPOLESTREAM                polestm,
  1293.      LPSTORAGE                  pstg,
  1294.      const DVTARGETDEVICE FAR*  ptd);
  1295.  
  1296. STDAPI OleConvertIStorageToOLESTREAMEx
  1297.     (LPSTORAGE                  pstg,
  1298.                                     // Presentation data to OLESTREAM
  1299.      CLIPFORMAT                     cfFormat,       //              format
  1300.      LONG                           lWidth,         //              width
  1301.      LONG                           lHeight,        //              height
  1302.      DWORD                          dwSize,         //              size in bytes
  1303.      LPSTGMEDIUM                pmedium,        //              bits
  1304.      LPOLESTREAM            polestm);
  1305.  
  1306. STDAPI OleConvertOLESTREAMToIStorageEx
  1307.     (LPOLESTREAM                polestm,
  1308.      LPSTORAGE                      pstg,
  1309.                                     // Presentation data from OLESTREAM
  1310.      CLIPFORMAT FAR*        pcfFormat,      //              format
  1311.      LONG FAR*                      plwWidth,       //              width
  1312.      LONG FAR*                      plHeight,       //              height
  1313.      DWORD FAR*                     pdwSize,        //              size in bytes
  1314.      LPSTGMEDIUM            pmedium);       //              bits
  1315.  
  1316.  
  1317.  
  1318. /* Storage Utility APIs */
  1319. STDAPI GetHGlobalFromILockBytes (LPLOCKBYTES plkbyt, HGLOBAL FAR* phglobal);
  1320. STDAPI CreateILockBytesOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
  1321.                     LPLOCKBYTES FAR* pplkbyt);
  1322.  
  1323. STDAPI GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL FAR* phglobal);
  1324. STDAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease,
  1325.                 LPSTREAM FAR* ppstm);
  1326.  
  1327.  
  1328. /* ConvertTo APIS */
  1329.  
  1330. STDAPI OleDoAutoConvert(LPSTORAGE pStg, LPCLSID pClsidNew);
  1331. STDAPI OleGetAutoConvert(REFCLSID clsidOld, LPCLSID pClsidNew);
  1332. STDAPI OleSetAutoConvert(REFCLSID clsidOld, REFCLSID clsidNew);
  1333. STDAPI GetConvertStg(LPSTORAGE pStg);
  1334. STDAPI SetConvertStg(LPSTORAGE pStg, BOOL fConvert);
  1335.  
  1336.  
  1337. #endif // _OLE2_H_
  1338.